TOP
Google Переводчик в LibreOffice Calc
Описание
Стандартный функционал LibreOffice Calc не содержит функций для перевода текста на другие языки. Однако любой пользователь может создать такую функцию самостоятельно.
В данной статье мы рассмотрим пользовательскую функцию GoogleTranslate_YouLibreCalc(), которая позволит переводить текст непосредственно в ячейке на любом рабочем листе.
Для перевода текста функция использует сайт "Google Переводчик" и может использоваться в любых формулах как самостоятельно, так и совместно с другими стандартными функциями.
StarBASIC код для функции Google Translate
Чтобы добавить функцию Google Translate , откройте меню Tools - Macros - Edit Macros... , выберите Module1 и скопируйте следующий текст в модуль:
- Option VBASupport 1
-
- Function GoogleTranslate_YouLibreCalc(TextToTranslate As String, SrcLang As String, TrgLang As String)
-
- Dim FCalc As Object
- Dim WebsiteURL As String
- Dim XMLHTTP As Object
- Dim oHTML As Object
- Dim HTMLDoc As HTMLDocument
- Dim ObjClass As Object
-
- FCalc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
- TextToTranslate = FCalc.callFunction("ENCODEURL", Array(TextToTranslate))
-
- SrcLang = LCase(SrcLang)
- TrgLang = LCase(TrgLang)
-
- IF SrcLang = "zh-cn" Then SrcLang = "zh-CN"
- IF SrcLang = "zh-tw" Then SrcLang = "zh-TW"
-
- IF TrgLang = "zh-cn" Then TrgLang = "zh-CN"
- IF TrgLang = "zh-tw" Then TrgLang = "zh-TW"
-
- WebsiteURL = "https://translate.google.com/m?sl=" + SrcLang + "&tl=" + TrgLang + "&hl=en&q=" + TextToTranslate
-
-
- Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
-
- XMLHTTP.Open "GET", WebsiteURL, False
- XMLHTTP.Send
-
-
- Set oHTML = CreateObject("HTMLFile")
- With oHTML
- .Open
- .Write XMLHTTP.responseText
- .Close
- End With
-
-
- Set HTMLDoc = oHTML
-
- Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)
- If Not ObjClass Is Nothing Then
- GoogleTranslate_YouLibreCalc = ObjClass.innerText
- End If
-
-
- Set ObjClass = Nothing
- Set oHTML = Nothing
- Set XMLHTTP = Nothing
- End Function
Option VBASupport 1
Function GoogleTranslate_YouLibreCalc(TextToTranslate As String, SrcLang As String, TrgLang As String)
' moonexcel.com.ua
Dim FCalc As Object
Dim WebsiteURL As String
Dim XMLHTTP As Object
Dim oHTML As Object
Dim HTMLDoc As HTMLDocument
Dim ObjClass As Object
FCalc = CreateUnoService("com.sun.star.sheet.FunctionAccess")
TextToTranslate = FCalc.callFunction("ENCODEURL", Array(TextToTranslate))
SrcLang = LCase(SrcLang)
TrgLang = LCase(TrgLang)
IF SrcLang = "zh-cn" Then SrcLang = "zh-CN"
IF SrcLang = "zh-tw" Then SrcLang = "zh-TW"
IF TrgLang = "zh-cn" Then TrgLang = "zh-CN"
IF TrgLang = "zh-tw" Then TrgLang = "zh-TW"
WebsiteURL = "https://translate.google.com/m?sl=" + SrcLang + "&tl=" + TrgLang + "&hl=en&q=" + TextToTranslate
' Выполняем API обращение к веб-серверу с помощью AJAX-запроса
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP")
XMLHTTP.Open "GET", WebsiteURL, False
XMLHTTP.Send
' Создаем HTML документ, используя текст ответа AJAX-запроса
Set oHTML = CreateObject("HTMLFile")
With oHTML
.Open
.Write XMLHTTP.responseText
.Close
End With
' Конвертируем HTML текст в объектную модель с помощью библиотеки веб-элементов Microsoft HTML Object Library
Set HTMLDoc = oHTML
Set ObjClass = HTMLDoc.getElementsByClassName("result-container").Item(0)
If Not ObjClass Is Nothing Then
GoogleTranslate_YouLibreCalc = ObjClass.innerText
End If
' Освобождаем память
Set ObjClass = Nothing
Set oHTML = Nothing
Set XMLHTTP = Nothing
End Function
Далее, закройте Macro Editor и вернитесь на рабочий лист LibreOffice Calc , выберите любую клетку и воспользуйтесь нашей новой функцией GoogleTranslate_YouLibreCalc() .
Использование расширения
Вы также можете воспользоваться функцией GOOGLETRANSLATE() установив бесплатное расширение YouLibreCalc.oxt или его полнофункциональную версию YLC_Utilities.oxt .
После этого данная функция будет доступна во всех файлах, которые будут открыты в LibreOffice Calc.